#ifndef _REASON_
#define _REASON_

#include <utility>
#include <vector>

namespace Hunger
{
	struct Choice;
	struct Decision;

	class Human;
	
	class Reason
	{
	public:
		enum Importance { Vital = 75, Inconsequential = 25 };
		enum Response { Yes = 1, Undecided = 0, No = -1 };

		Reason(Human * human);
		~Reason();

		Decision Choose(Choice * choice);
		std::vector<Decision> Choose(std::vector<Choice *> choices);

	private:
		Decision DecideOnAffinity(Choice * choice);
		Decision DecideOnWhim();
		Decision DecideOnMood();
		Decision DecideOnValues(Choice * choice);

	private:
		Human * reasoner;
	};
}
#endif //_REASON_